﻿using System;
using System.Collections.Generic;
using System.Text;

namespace PmfWeb.Core.Pool
{
    ///<summary>
    /// 对象池接口
    ///</summary>
    public interface IObjectPool<T> where T : new()
    {
        ///<summary>
        /// 池对象最大数量
        ///</summary>
        int MaxPool { set; get; }
        /// <summary>
        /// 池对象最小数量
        /// </summary>
        int MinPool { set; get; }


        ///<summary>
        /// 从池中获取对象
        ///</summary>
        ///<returns></returns>
        T GetObject();

        ///<summary>
        /// 将对象返还对象池
        ///</summary>
        void ReturnObject();

        /// <summary>
        /// 关闭对象或释放对象
        /// </summary>
        void Close();

        /// <summary>
        /// 获取已经激活或已经在使用的对象数量
        /// </summary>
        int ActivedCount { get; }


        ///<summary>
        /// 获取等待使用或空闲的对象数量
        ///</summary>
        int WaitingCount { get; }
    } 

}
